package main

import (
	"awesomeProject1/node"
	"fmt"
	"strings"
)

func showData(p *node.Node) {
	for p != nil {
		fmt.Printf("%d ", p.Data)
		p = p.Next
	}
}

func insertData(p *node.Node, datas []int) {
	for i := 0; i < len(datas); i++ {
		var node = new(node.Node)
		node.Data = datas[i]
		p.Next = node
		p = node
	}
}

func delHead(p *node.Node) *node.Node {
	var q = p //操作指针
	//只有一个头节点
	if q.Next.Next == nil {
		q.Next = nil
	}
	q.Next = q.Next.Next

	return p
}

func delTail(p *node.Node) *node.Node {
	var q = p //操作指针

	//1.找到最后一个结点
	if q != nil {
		var t = q
		q = q.Next
		if q.Next == nil {
			t.Next = nil
			return q
		}
	}
	return q
}

func main() {
	var l int
	fmt.Print("请输入链表长度: ")
	_, err := fmt.Scan(&l)
	if err != nil || l < 0 {
		fmt.Println("无效的输入。")
		return
	}

	var data = make([]int, l)
	for i := 0; i < l; i++ {
		fmt.Printf("请输入链表第 %d 个数据: ", i)
		var input string
		fmt.Scan(&input)
		// 移除可能的回车符
		input = strings.TrimSpace(input)
		if num, err := fmt.Sscanf(input, "%d", &data[i]); err != nil || num != 1 {
			fmt.Println("无效的输入。")
			return
		}
	}

	head := &node.Node{}
	insertData(head, data)
	showData(head.Next) // 注意这里使用 head.Next，因为 head 本身是一个空节点
}
